package testalcohol;

import cn.jingyinghui.rules.customer.Customer;
import cn.jingyinghui.rules.customer.DroolsUtil;
import cn.jingyinghui.rules.order.Order;
import cn.jingyinghui.rules.order.OrdersUtil;
import cn.jingyinghui.rules.person.Person;
import org.junit.jupiter.api.Test;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;

public class FullDrollTester {

    /**
     * 测试酒精能否购买
     */
    @Test
    public void testAlcoholCanbeBuy() {

        // 创建测试数据
        Customer adult = new Customer("张三", 25);
        Customer minor = new Customer("李四", 16);

        // 获取KieSession
        KieSession kieSession = DroolsUtil.getKieSession();

        // 将对象插入工作内存
        kieSession.insert(adult);
        kieSession.insert(minor);

        // 执行规则
        System.out.println("开始执行规则...");
        kieSession.fireAllRules();
        kieSession.dispose();

        // 输出结果
        System.out.println("\n规则执行结果：");
        System.out.println(adult);
        System.out.println(minor);
    }


    @Test
    public void testOrderCanbeBuy() {

        // 创建业务对象
        Order vipOrder = new Order(1500, true);
        Order nonVipOrder = new Order(800, false);

        // 获取KieSession
        KieSession kieSession = OrdersUtil.getKieSession();

        // 将对象插入工作内存
        kieSession.insert(vipOrder);
        kieSession.insert(nonVipOrder);

        // 执行规则
        System.out.println("开始执行规则...");
        kieSession.fireAllRules();
        kieSession.dispose();

        // 输出结果
        System.out.println("\n规则执行结果：");
        System.out.println(vipOrder);
        System.out.println(nonVipOrder);


    }



    @Test
    public void testPersonCanbeBuy() {
        // 获取KieServices实例
        KieServices kieServices = KieServices.Factory.get();
        // 创建KieFileSystem并添加规则文件
        /*KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
        Resource resource = kieServices.getResources().newClassPathResource("rules/clothes-rule.drl");
        kieFileSystem.write(resource);
        KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem).buildAll();
        if (kieBuilder.getResults().hasMessages(org.kie.api.builder.Message.Level.ERROR))
            throw new RuntimeException("Build Errors:\n" + kieBuilder.getResults().toString());
        KieModule kieModule = kieBuilder.getKieModule();*/
        KieContainer kieContainer = kieServices.getKieClasspathContainer();
        // 创建KieSession
        KieSession kieSession = kieContainer.newKieSession("xxxKieSession");

        // 创建业务对象
        Person person = new Person("Alice", 20);

        // 将对象插入会话
        kieSession.insert(person);

        // 触发规则
        kieSession.fireAllRules();

        // 关闭会话
        kieSession.dispose();
    }




}
